<?php

namespace Controller;

class NewTopicController
{
	//Parametrar: Instanser av klasserna TopicList, TopicView samt Loginhandler
	//Returnerar: HTML sträng för skapande av nytt topic
	public function DoControll(\Model\TopicList $tl, \View\TopicView $tv, \Model\LoginHandler $lh)
	{
		$ret = $tv->RenderHeader(\View\TopicView::NEW_TOPIC_HEADER);
		$ret .= $tv->RenderNewTopicForm();
		
		if($lh->IsLoggedIn() == TRUE)//Försäkrar att anv fortfarande är inloggad
		{		
			if($tv->TriedToCreateTopic() == TRUE)
			{
				//Anropar valideringsfunktion		
				$validationArray = $tl->ValidateTopicInput($tv->GetHeader(), $tv->GetContent());		
				
				//Returnerar felmeddelande om sådana finns
				if(empty($validationArray) == FALSE)
				{
					$ret .= $tv->RenderErrorArray($validationArray);
					return $ret;
				}
				
				//Skapar nytt topic
				$tl->AddTopic($lh->GetUserIdBySession(),
							  $tv->GetHeader(),
							  $tv->GetContent());	
							  					//Hämtar id:t till det nyss skapade objektet
				$lastTopicId = $tl->GetLastAddedTopicId();
				
				\View\NavigationView::redirectToNewTopic($lastTopicId);		  
			}
		}
		else 
		{
			$ret = $tv->RenderMessage(\View\TopicView::WAS_LOGGED_OUT);
		}

		return $ret;
	}
}

?>